home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / inventor / SpaceballViewer / MyUIRegion.c++ < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  3.9 KB  |  144 lines

  1. /*
  2.  * Copyright (c) 1990-1991, 1994 Silicon Graphics, Inc.
  3.  *
  4.  * Permission to use, copy, modify, distribute, and sell this software and
  5.  * its documentation for any purpose is hereby granted without fee, provided
  6.  * that the name of Silicon Graphics may not be used in any advertising or
  7.  * publicity relating to the software without the specific, prior written
  8.  * permission of Silicon Graphics.
  9.  *
  10.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
  11.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
  12.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  13.  *
  14.  * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
  15.  * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
  16.  * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE
  17.  * POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN
  18.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  19.  */
  20. /*
  21.  * Copyright (C) 1990,91   Silicon Graphics, Inc.
  22.  *
  23.  _______________________________________________________________________
  24.  ______________  S I L I C O N   G R A P H I C S   I N C .  ____________
  25.  |
  26.  |   $Revision: 1.1006 $
  27.  |
  28.  |   Author(s)    : Alain Dumesny
  29.  |
  30.  |
  31.  ______________  S I L I C O N   G R A P H I C S   I N C .  ____________
  32.  _______________________________________________________________________
  33.  */
  34.  
  35. #include "MyUIRegion.h"
  36. #include <GL/gl.h>
  37.  
  38. // ??? doing a GL_LINE_LOOP seems to be missing the top right
  39. // ??? pixel due to subpixel == TRUE in openGL.
  40. #define RECT(x1, y1, x2, y2) \
  41.     glBegin(GL_LINE_STRIP); \
  42.     glVertex2s(x2, y2); glVertex2s(x1, y2); \
  43.     glVertex2s(x1, y1); glVertex2s(x2, y1); \
  44.     glVertex2s(x2, y2+1); \
  45.     glEnd();
  46.  
  47. void drawDownUIBorders(short x1, short y1, short x2, short y2, SbBool blackLast)
  48. {
  49.     DARK1_UI_COLOR;
  50.     glBegin(GL_LINE_STRIP);
  51.     glVertex2s(x1, y1+1); glVertex2s(x1, y2); glVertex2s(x2+1, y2);
  52.     glEnd();
  53.     LIGHT1_UI_COLOR;
  54.     glBegin(GL_LINE_STRIP);
  55.     glVertex2s(x1, y1); glVertex2s(x2, y1); glVertex2s(x2, y2);
  56.     glEnd();
  57.     
  58.     x1++; y1++; x2--; y2--;
  59.     DARK2_UI_COLOR;
  60.     glBegin(GL_LINE_STRIP);
  61.     glVertex2s(x1, y1+1); glVertex2s(x1, y2); glVertex2s(x2+1, y2);
  62.     glEnd();
  63.     WHITE_UI_COLOR;
  64.     glBegin(GL_LINE_STRIP);
  65.     glVertex2s(x1, y1); glVertex2s(x2, y1); glVertex2s(x2, y2);
  66.     glEnd();
  67.     
  68.     x1++; y1++; x2--; y2--;
  69.     if (blackLast) {
  70.     BLACK_UI_COLOR;
  71.     RECT(x1, y1, x2, y2);
  72.     }
  73.     else {
  74.     DARK3_UI_COLOR;
  75.     glBegin(GL_LINE_STRIP);
  76.     glVertex2s(x1, y1+1); glVertex2s(x1, y2); glVertex2s(x2+1, y2);
  77.     glEnd();
  78.     DARK2_UI_COLOR;
  79.     glBegin(GL_LINE_STRIP);
  80.     glVertex2s(x1, y1); glVertex2s(x2, y1); glVertex2s(x2, y2);
  81.     glEnd();
  82.     }
  83. }
  84.  
  85.  
  86. void drawDownUIRegion(short x1, short y1, short x2, short y2)
  87. {
  88.     drawDownUIBorders(x1, y1, x2, y2);
  89.     
  90.     MAIN_UI_COLOR;
  91.     x1+=UI_THICK; y1+=UI_THICK; x2-=UI_THICK; y2-=UI_THICK;
  92.     RECT(x1, y1, x2, y2);
  93.     x1++; y1++; x2--; y2--;
  94.     RECT(x1, y1, x2, y2);
  95.     x1++; y1++; x2--; y2--;
  96.     
  97.     drawDownUIBorders(x1, y1, x2, y2, TRUE);
  98. }
  99.  
  100.  
  101. void drawThumbUIRegion(short x1, short y1, short x2, short y2)
  102. {
  103.     short v[3][2];
  104.     short x = (x1 + x2) / 2;
  105.     
  106.     v[0][0] = x1;
  107.     v[0][1] = v[2][1] = y1;
  108.     v[1][0] = x;
  109.     v[1][1] = y2;
  110.     v[2][0] = x2;
  111.     
  112.     MAIN_UI_COLOR;
  113.     glBegin(GL_POLYGON);
  114.     glVertex2sv(v[0]);
  115.     glVertex2sv(v[1]);
  116.     glVertex2sv(v[2]);
  117.     glEnd();
  118.     
  119.     glBegin(GL_LINES);
  120.     
  121.     BLACK_UI_COLOR;
  122.     glVertex2s(x1, y1); glVertex2s(x, y2);
  123.     DARK3_UI_COLOR;
  124.     glVertex2s(x, y2); glVertex2s(x2, y1);
  125.     glVertex2s(x2, y1); glVertex2s(x1+1, y1);
  126.     
  127.     x1++; y1++; x2--; y2--;
  128.     WHITE_UI_COLOR;
  129.     glVertex2s(x1, y1); glVertex2s(x, y2);
  130.     DARK2_UI_COLOR;
  131.     glVertex2s(x, y2); glVertex2s(x2, y1);
  132.     DARK1_UI_COLOR; 
  133.     glVertex2s(x2, y1); glVertex2s(x1+1, y1);
  134.     
  135.     x1++; y1++; x2--; y2--;
  136.     WHITE_UI_COLOR;
  137.     glVertex2s(x1, y1); glVertex2s(x, y2);
  138.     DARK2_UI_COLOR;
  139.     glVertex2s(x, y2); glVertex2s(x2, y1);
  140.     
  141.     glEnd();
  142. }
  143.  
  144.